package com.qzsoft.zhjd.machine.modules.machinerealtime.dto;

import java.math.BigDecimal;
import java.util.Date;

import com.qzsoft.jeemis.common.annotation.Dict;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * @ClassName MachineRealtimeDto
 * @Description 设备实时数据
 * @author linhuawei
 * @since 2021-11-08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class MachineRealtimeDto {

    /**
     * 实时数据主键
     */
    private String id;

    /**
     * 机械主键
     */
    private String machineId;

    /**
     * 机械编号
     */
    private String machineKey;

    /**
     * 设备名称
     */
    private String machineName;

    /**
     * 设备类型
     */
    @Dict(dicCodeField = "machineType", dictCodeId = "MACHINE_TYPE")
    private String machineType;

    /**
     * 设备一级分类
     */
    @Dict(dicCodeField = "machineCategory1", dictCodeId = "MACHINE_CATEGORY")
    private String machineCategory1;

    /**
     * 设备二级分类
     */
    @Dict(dicCodeField = "machineCategory2", dictCodeId = "MACHINE_CATEGORY")
    private String machineCategory2;

    /**
     * 设备品牌
     */
    @Dict(dicCodeField = "machineBrand", dictCodeId = "MACHINE_BRAND_MODEL")
    private String machineBrand;

    /**
     * 设备型号
     */
    @Dict(dicCodeField = "machineModel", dictCodeId = "MACHINE_BRAND_MODEL")
    private String machineModel;
    
    /**
     * 设备头像
     */
    private String coverImg;

    /**
     * 机械入网状态
     */
    private String onlineState;

    /**
     * 机械状态
     */
    private String state;

    /**
     * 机械状态持续时间
     */
    private Integer standingTime;

    /**
     * 机械状态上报时间
     */
    private Date stateUpdateTime;

    /**
     * 当前位置
     */
    private String address;

    /**
     * 经度
     */
    private BigDecimal longitude;

    /**
     * 纬度
     */
    private BigDecimal latitude;

    /**
     * 最后定位时间
     */
    private Date locationTime;

    /**
     * 终端状态
     */
    private String deviceState;

    /**
     * 硬件设备编号
     */
    private String deviceTerminalSn;

    /**
     * 硬件版本型号
     */
    private String deviceModel;

    /**
     * 电池电量
     */
    private BigDecimal deviceBatteryPercent;

    /**
     * 设备绑定时间
     */
    private Date deviceBindTime;

    /**
     * 设备上线时间
     */
    private Date deviceOnlineTime;
    
    /**
     * 当前油量
     */
    private BigDecimal fuelVolume;
    
    /**
     * 当前比例
     */
    private BigDecimal fuelPercentage;

    /**
     * 创建时间
     */
    private Date createDate;
    
    public BigDecimal getFuelPercentageRate() {
        return null == fuelPercentage ? null : fuelPercentage.multiply(new BigDecimal(100));
    }

}
